package com.peas.platform.module.icims.budget.apply.dto;

import java.util.*;
import java.math.*;
import com.peas.platform.common.core.annotation.Comment;
import com.peas.platform.common.core.dto.BaseDto;
import com.peas.platform.framework.mybatisplus.annotation.Condition;
import com.peas.platform.framework.mybatisplus.annotation.ConditionOperator;
import lombok.Data;
import lombok.EqualsAndHashCode;

// 一上预算
@Data
@EqualsAndHashCode(callSuper = false)
public class BudgetOneDto extends BaseDto {

    // 二级项目ID
    // （二级项目表）外键
    @Comment(value = "二级项目ID")
    private Long projectTwoId;

    // 项目编制编码
    @Comment(value = "项目编制编码")
    @Condition(operator = ConditionOperator.IN)
    private String code;

    // 项目编制名称
    // 基本信息
    @Comment(value = "项目编制名称")
    private String name;

    // 存续状态
    // 选择框
    // 字典取值:BudgetProjectViability
    @Comment(value = "存续状态", dictType = "BudgetProjectViability")
    @Condition(operator = ConditionOperator.IN)
    private String viability;

    // 项目来源
    // 选择框
    // 字典取值:BudgetProjectSource
    @Comment(value = "项目来源", dictType = "BudgetProjectSource")
    @Condition(operator = ConditionOperator.IN)
    private String source;

    // 项目属性
    // 新增项目、持续项目、跨年度项目
    // 字典取值:BudgetProjectAttribute
    @Comment(value = "项目属性", dictType = "BudgetProjectAttribute")
    @Condition(operator = ConditionOperator.IN)
    private String attribute;

    // 申请财政总额
    @Comment(value = "申请财政总额")
    private BigDecimal totalFund;

    // 社会投入资金
    @Comment(value = "社会投入资金")
    private BigDecimal putinFund;

    // 当年资金
    @Comment(value = "当年资金")
    private BigDecimal currFund;

    // 资金性质
    @Comment(value = "资金性质")
    private String fundType;

    // 用款单位ID
    // （单位表）外键
    @Comment(value = "用款单位ID")
    private Long useGovId;

    // 申报单位ID
    // （单位表）外键
    @Comment(value = "申报单位ID")
    private Long applyGovId;

    // 上一年项目预算安排情况
    @Comment(value = "上一年项目预算安排情况")
    private String previousArrange;

    // 主管部门ID
    // 【预算主管部门】
    @Comment(value = "主管部门ID")
    private Long managerOrgId;

    // 主管部门联系人
    @Comment(value = "主管部门联系人")
    private String managerName;

    // 主管部门联系电话
    @Comment(value = "主管部门联系电话")
    private String managerUserContact;

    // 项目实施单位ID
    // （单位表）外键
    @Comment(value = "项目实施单位ID")
    private Long workGovId;

    // 项目负责人ID
    // （用户表）外键
    @Comment(value = "项目负责人ID")
    private Long workUserId;

    // 项目负责人联系方式
    @Comment(value = "项目负责人联系方式")
    private String workUserContact;

    // 状态
    // 0保存、1提交审批、2审批通过、3审批驳回、4撤回
    @Comment(value = "状态")
    @Condition(operator = ConditionOperator.IN)
    private String state;

    // 起始年度
    @Comment(value = "起始年度")
    private String startTime;

    // 终止年度
    @Comment(value = "终止年度")
    private String endTime;

    // 项目概述
    @Comment(value = "项目概述")
    private String summarize;

    // 设立依据及申报理由
    @Comment(value = "设立依据及申报理由")
    private String reason;

    // 是否债券可用项目
    // 字典取值:BudgetProjectDebenture
    @Comment(value = "是否债券可用项目", dictType = "BudgetProjectDebenture")
    @Condition(operator = ConditionOperator.IN)
    private String isDebenture;

    // 是否科研项目
    // 枚举取值:CommonYesNo
    @Comment(value = "是否科研项目", enumType = "CommonYesNo")
    @Condition(operator = ConditionOperator.IN)
    private String isScientific;

    // 是否基建项目
    // 枚举取值:CommonYesNo
    @Comment(value = "是否基建项目", enumType = "CommonYesNo")
    @Condition(operator = ConditionOperator.IN)
    private String isConstruction;

    // 基建立项情况
    // 选择框
    // 字典取值:BudgetProjectConstruction
    @Comment(value = "基建立项情况", dictType = "BudgetProjectConstruction")
    @Condition(operator = ConditionOperator.IN)
    private String constructionDesc;

    // 是否代建项目
    // 枚举取值:CommonYesNo
    @Comment(value = "是否代建项目", enumType = "CommonYesNo")
    @Condition(operator = ConditionOperator.IN)
    private String isAgent;

    // 代建单位ID
    // （单位表）外键
    @Comment(value = "代建单位ID")
    private Long agentGovId;

    // 是否政府采购
    // 1是，0否
    // 枚举取值:CommonYesNo
    @Comment(value = "是否政府采购", enumType = "CommonYesNo")
    @Condition(operator = ConditionOperator.IN)
    private String isGovernmentPurchase;

    // 项目绩效总目标
    // 绩效目标总目标
    @Comment(value = "项目绩效总目标")
    private String targetAll;

    // 项目绩效本年度目标
    // 绩效目标本年度目标
    @Comment(value = "项目绩效本年度目标")
    private String targetCurrent;

    // 一上申请金额
    // 一下控制时写入（完成状态）
    @Comment(value = "一上申请金额")
    private BigDecimal applyOneFund;

    // 一下控制金额
    @Comment(value = "一下控制金额")
    private BigDecimal approveOneFund;

    //Criteria
    private Date createTimeStart;
    private Date createTimeEnd;
    private Date updateTimeStart;
    private Date updateTimeEnd;

    //非持久化
    private BigDecimal totalAmount;
}
